﻿Imports System.Data
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.OleDb
Imports System
Imports System.Globalization

Partial Class Interfaz_frmExtraMensaje
    Inherits System.Web.UI.Page
    Dim CL As New ControladorLogica
    Dim dtDatos As New DataTable
    Dim dataset As New DataSet

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        LabelUser.Text = Session("user").ToString
        Dim arrayListUsuarios As ArrayList = CL.ObtenerUsuario()
        Me.ImageUser.ImageUrl = "~/Interfaz/Imagenes/PersonaX.jpg"

        If Not Page.IsPostBack Then
            For i As Integer = 0 To arrayListUsuarios.Count - 1
                Me.DropDownList1.Items.Add(DirectCast(arrayListUsuarios.Item(i), Usuario).User)
            Next

            DropCC.Items.Add("Todos")
            For i As Integer = 0 To arrayListUsuarios.Count - 1
                Me.DropCC.Items.Add(DirectCast(arrayListUsuarios.Item(i), Usuario).User)
            Next
        End If
        FuncionAviso()
    End Sub




#Region "Funcionalidades"
    Public Sub Mensaje(ByVal msg As String)
        Dim alertScript As String = "<script language=JavaScript runat=server>"
        alertScript &= "alert('" & msg & "');"
        alertScript &= "</script>"
        ClientScript.RegisterClientScriptBlock(Page.GetType(), "clientScrip", alertScript)
    End Sub

    Private Sub CargarUsuariosLista()
        Dim arrayListUsuarios As ArrayList = CL.ObtenerUsuario()
        If (Me.DropCC.Text = "Todos") Then
            For i As Integer = 0 To arrayListUsuarios.Count - 1
                Me.ListUser.Items.Add(DirectCast(arrayListUsuarios.Item(i), Usuario).User)
            Next
        Else
            Me.ListUser.Items.Add(Me.DropCC.Text)
        End If
    End Sub

    Private Sub insertarMensajesBD()
        Dim usuario As String = Me.DropDownList1.Text
        Dim asunto As String = TxTAsunto.Text
        Dim prioridad As String = ""
        Dim fkUsuario As Usuario = DirectCast(CL.ObtenerUsuarioUserID(usuario).Item(0), Usuario)
        Dim cuerpo As String = TxTcuerpo.Text
        Dim remite As Usuario = DirectCast(CL.ObtenerUsuarioUserID(LabelUser.Text).Item(0), Usuario)
        Dim empleado As Empleado = DirectCast(CL.obtenerEmpleadoFK(remite.RefEmpleado).Item(0), Empleado)
        Dim remiteName As String = empleado.Nombre + " " + empleado.Apellido
        Dim fechaDate As String = Datafecha.Text

        If (asunto <> "") Then
            If (cuerpo <> "") Then
                If (Me.CheckAlta.Checked = True) Then
                    prioridad = "Alta"
                Else
                    If (Me.CheckMedia.Checked = True) Then
                        prioridad = "Media"
                    Else
                        If (Me.CheckBaja.Checked = True) Then
                            prioridad = "Baja"
                        End If
                    End If
                End If
                Dim nuevoMensaje As New Mensaje("", asunto, prioridad, cuerpo, fkUsuario.ID, remiteName, fechaDate)
                CL.insertarMensaje(nuevoMensaje)
                Me.Mensaje(" Su mensaje a sido enviado ")
            Else
                Me.Mensaje("Debe llenar el campo Cuerpo")
            End If
        Else
            Me.Mensaje("Debe llenar el campo asunto")
        End If

        Dim arrayMail As ArrayList = CL.obtenerMail()

        Dim mail As Mail = DirectCast(arrayMail.Item(0), Mail)

        asunto = asunto + " prioridad: " + prioridad + " (Enviado por :" + LabelUser.Text + ")"

        Dim user As Usuario
        Dim empl As Empleado

        For i As Integer = 0 To Me.ListUser.Items.Count - 1
            user = DirectCast(CL.ObtenerUsuarioUserID(Me.ListUser.Items(i).ToString).Item(0), Usuario)
            empl = DirectCast(CL.obtenerEmpleadoRut(user.RefEmpleado).Item(0), Empleado)

            CL.enviarMail(Nothing, mail.SmtpHost, mail.NomCuenta, mail.Password, empleado.Email, empl.Email, asunto, cuerpo)
        Next

    End Sub

    Private Sub CargarUsuario()
        Dim usuario As Usuario = DirectCast(CL.ObtenerUsuarioUserID(Me.DropDownList1.Text).Item(0), Usuario)
        Dim empleado As Empleado = DirectCast(CL.obtenerEmpleadoFK(usuario.RefEmpleado).Item(0), Empleado)
        Me.TxTNombre.Text = empleado.Nombre + " " + empleado.Apellido
        ImageUser.ImageUrl = empleado.RutaFoto
    End Sub

    Private Sub FuncionAviso()
        Dim query As String = "select count(*) cuenta from solicitudes where estado ='P'"
        Dim cantidadPendientes As Integer = CInt(CL.Ejecuta(query).Item("cuenta").ToString)

        If cantidadPendientes <> 0 Then
            Image2.Visible = True
            Image3.Visible = False
        Else
            Image2.Visible = False
            Image3.Visible = True
        End If
    End Sub

    Private Sub limpiar()
        Me.ListUser.Items.Clear()
        Me.TxTAsunto.Text = String.Empty
        Me.TxTcuerpo.Text = String.Empty
        Me.TxTNombre.Text = String.Empty
        Me.CheckAlta.Checked = False
        Me.CheckBaja.Checked = False
        Me.CheckMedia.Checked = False
    End Sub

#End Region

#Region "Botones"

    Protected Sub BtnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnAdd.Click
        CargarUsuariosLista()
    End Sub

    Protected Sub BtnEnviar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEnviar.Click
        insertarMensajesBD()
        limpiar()
    End Sub

    Protected Sub Btnseleccionar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btnseleccionar.Click
        CargarUsuario()
    End Sub

    Protected Sub BtnLogout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnLogout.Click
        Session("user") = ""
        Response.Redirect("Principal.aspx")
    End Sub
#End Region


   
    
End Class